<?php

require_once 'AbstractModel.php';

class ServiceCommanderBDD extends AbstractModel
{
	// Préparation des requêtes
	var $_truncate;
	var $_insert;
	var $_update_idLigneCommande;
	var $_update_code_service_commande;
	var $_update_code_commande;
	var $_update_enseigne_fournisseur;
	var $_update_quantite;
	var $_update_cout_total_ht;
	var $_update_cout_total_ttc;
	var $_update_commentaire;
	var $_selectAll;
	var $_selectPrestationNames;
	var $_delete;
	
	public function __construct()
    {
        parent::__construct('SERVICES_COMMANDE');
		// Connexion à la base de données
		$this->_truncate = $this->_db->prepare('TRUNCATE SERVICES_COMMANDE');
		$this->_insert = $this->_db->prepare('INSERT INTO SERVICES_COMMANDE (idLigneCommande,code_service_commande,code_commande,enseigne_fournisseur,quantite,cout_total_ht,cout_total_ttc,commentaire) VALUES (? ,? ,? ,? ,? ,? ,? ,? );'
);

$this->_update_code_service_commande = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET code_service_commande  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_code_commande = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET code_commande  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_enseigne_fournisseur = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET enseigne_fournisseur  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_quantite = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET quantite  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_cout_total_ht = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET cout_total_ht  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_cout_total_ttc = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET cout_total_ttc  = :value WHERE idLigneCommande=:idLigneCommande;');
$this->_update_commentaire = $this->_db->prepare('UPDATE SERVICES_COMMANDE SET commentaire  = :value WHERE idLigneCommande=:idLigneCommande;');

		$this->_selectAll = $this->_db->prepare('SELECT * FROM SERVICES_COMMANDE');
		$this->_selectAll->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		$this->_selectPrestationNames = $this->_db->prepare('SELECT idLigneCommande, libelle_prestation FROM SERVICES_COMMANDE');
		$this->_selectPrestationNames->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		
		$this->_delete = $this->_db->prepare('DELETE FROM SERVICES_COMMANDE WHERE idLigneCommande=?;');
    }
	
	public function addLigneCommande($code_service_commande,$code_commande,$enseigne_fournisseur,$quantite,$cout_total_ht,$cout_total_ttc,$commentaire)
{
	// On sécurise les entrées
	$code_service_commande = strip_tags($code_service_commande);
	$code_commande = strip_tags($code_commande);
	$enseigne_fournisseur = strip_tags($enseigne_fournisseur);
	$quantite = strip_tags($quantite);
	$cout_total_ht = strip_tags($cout_total_ht);
	$cout_total_ttc = strip_tags($cout_total_ttc);
	$commentaire = strip_tags($commentaire);

	try{
			if ( $this->_insert->execute(array($code_service_commande,$code_commande,$enseigne_fournisseur,$quantite,$cout_total_ht,$cout_total_ttc,$commentaire)) )
			{
				echo "SUCCESS : La nouvelle entré de commande à été créé";
			}else{
				echo "FAILURE : La nouvelle entré de commande n'a PAS put être créé: ";
			}
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public function update($idLigneCommande, $attribute, $value)
	{
		// Sécurisation des données en entrée
		$code_prestation = strip_tags($idLigneCommande);
		$value = strip_tags($value);
			
		try{
			if ( $attribute == 'code_service_commande'){
				$this->_update_code_service_commande->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_code_service_commande->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_code_service_commande->execute();
			}elseif ( $attribute == 'code_command'){
				$this->_update_code_commande->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_code_commande->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_code_commande->execute();
			}elseif ( $attribute == 'enseigne_fournisseur'){
				$this->_update_enseigne_fournisseur->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_enseigne_fournisseur->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_enseigne_fournisseur->execute();
			}elseif ( $attribute == 'quantite'){
				$this->_update_quantite->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_quantite->bindParam(':value', $value, PDO::PARAM_INT);
				$this->_update_quantite->execute();
			}elseif ( $attribute == 'cout_total_ht'){
				$this->_update_cout_total_ht->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_cout_total_ht->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_cout_total_ht->execute();
			}elseif ( $attribute == 'cout_total_ttc'){
				$this->_update_cout_total_ttc->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_cout_total_ttc->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_cout_total_ttc->execute();
			}elseif ( $attribute == 'commentaire'){
				$this->_update_commentaire->bindParam(':idLigneCommande', $idLigneCommande, PDO::PARAM_INT);
				$this->_update_commentaire->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_commentaire->execute();
			}
			echo "La modification de la ligne de commande à été effectuée avec succés :)";
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public  function fecthAllServiceCom()
	{
		$this->_selectAll->execute();
		return $listeFamille = $this->_selectAll->fetchAll();
	}
	
	public  function fetchPrestationNames()
	{
		$this->_selectPrestationNames->execute();
		return $listeFamille = $this->_selectPrestationNames->fetchAll();
	}
	
	public  function delete($idLigneCommande)
	{
		$this->_delete->execute(array($idLigneCommande));
	}
}
